package droidhouseclone;

import java.util.Observable;

/**
 *
 * @author Lorenzo Ferri
 */

public class StateObservable extends Observable {

    //Constanti degli Stati del subject
    public final static int START = 1;
    public final static int STOP = 2;
    public final static int CHANGEPORT = 3;
    public final static int CHANGEVOLUME = 4;
    public final static int CHANGEDURATION =5;
    public final static int CHANGESONGNAME = 6;
    public final static int PLAYINGSONG = 7;
    public final static int ERRORMESSAGE = 8;

    //Dati sotto osservazione degli observer
    private int state;                  //Tipo di stato
    private int porta;                  //Porta di ascolto per file musicali
    private int volume;                 //Valore del volume di riproduzione
    private int duration;               //Durata totale della canzone in riproduzione
    private String name;                //Titolo dell canzone in riproduzione
    private double second;              //Secondi attuali di riproduzione
  

    public StateObservable() {

        //Inizializzo gli Attributi
        this.state = 0;
        this.porta = 3000;
        this.volume = 0;
        this.duration = 0;
        this.name = "";
        this.second = 0;
        
    }

    //Cambio dello stato del subject
    public void setStateServer(int stat) {

        this.state = stat;
        setChanged();
        notifyObservers();

    }

    //Restituisce lo stato
    public int getState() {

        return state;
    }

    //Settaggio della porta
    public void setPort(int parseInt) {
        porta = parseInt;
        setStateServer(CHANGEPORT);

    }

    //Restituisce il valore della porta
    public int getPort() {
        return porta;
    }

    //Incrementa il volume
    public void increaseVolume(int vol) {
        if(vol>0&&this.volume<100)
        this.volume += vol;
        setStateServer(CHANGEVOLUME);

    }

    //Decrementa il volume
    public void decreaseVolume(int vol){
        if(this.volume>0&&vol>0)
                this.volume -= vol;
        setStateServer(CHANGEVOLUME);
    }

    //Restituisce il valore del volume settato
    public int getVolume() {
        return volume;
    }

    //Imposta la durata totale della canzone
    public void setDuration(int temp) {
        this.duration = temp;
        second=0;
        setStateServer(CHANGEDURATION);
        this.state = 5;

    }

    //Restituisce la durata totale della canzone
    public int getDuration() {
        return duration;
    }

    //Imposta il titolo della canzone
    public void setName(String nome) {
        this.name = nome;
        setStateServer(CHANGESONGNAME);


    }

    //Restituisce il titolo della canzone
    public String getName() {
        return name;
    }

    //Imposta i secondi correnti
    public void setSecond(double currentSecond) {
        second += currentSecond;
        setStateServer(PLAYINGSONG);

    }
    
    //Restituisce i secondi correnti
    public double getSecond() {
        return this.second;
    }
}
